/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package przetarg;

import bazy.HibernateUtil;
import bazy.Zamowienia;
import java.io.Serializable;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.ConfigurableNavigationHandler;
import javax.faces.context.FacesContext;
import logowanie.LogBean;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 * Komponent zarządzajacy obsługą poszczególnego przetargu.
 * @author Grzesiek
 */
@Named(value = "pokazPrzetargKontroler")
@RequestScoped
public class pokazPrzetargKontroler implements Serializable {

    Session session = null;
    private String akcja;
    private int idPrzetargu;
    private List<Zamowienia> listaZamowien;

    /** Creates a new instance of pokazPrzetargKontroler */
    public pokazPrzetargKontroler() {
    }

    public String getAkcja() {
        return akcja;
    }

    public List<Zamowienia> getListaZamowien() {
        return listaZamowien;
    }

    public void setListaZamowien(List<Zamowienia> listaZamowien) {
        this.listaZamowien = listaZamowien;
    }

    public void setAkcja(String akcja) {
        this.akcja = akcja;
    }

    public int getIdPrzetargu() {
        return idPrzetargu;
    }

    public void setIdPrzetargu(int idPrzetargu) {
        this.idPrzetargu = idPrzetargu;
    }

    /**
     * Inicjalizacja strony, sprawdzenie uprawnień, oraz w przypadku wystąpienia parametrów widoku, odpowiednia ich obsługa.
     */
    public void inicjalizuj() {
        FacesContext context = FacesContext.getCurrentInstance();
        LogBean bean = (LogBean) context.getApplication().evaluateExpressionGet(context, "#{logBean}", LogBean.class);
        if (!bean.isLoggedin() || !bean.getUprawnienia().equals("zaopatrzeniowiec")) {
            ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) context.getApplication().getNavigationHandler();
            handler.performNavigation("brak_dostepu");
        }
        if (akcja != null) {
            if (akcja.equals("pokaz")) {
                wczytajListe(idPrzetargu);
            }
        }

    }

    /**
     * Wczytanie listy zamówień, które wchodzą w skłąd danego przetargu.
     * @param idPrzetargu
     */
    public void wczytajListe(int idPrzetargu) {
        session = HibernateUtil.getSessionFactory().openSession();
        org.hibernate.Transaction tx = session.beginTransaction();
        Query query = session.createQuery("from Zamowienia zam, IN (zam.przetargis) p  where p.idprzetargi = " + idPrzetargu + " order by zam.datazlozeniawniosku desc");
        listaZamowien = (List<Zamowienia>) query.list();

        tx.commit();
    }

    public boolean jestListaZamowien() {

        if (listaZamowien.isEmpty()) {
            return false;
        } else {
            return true;
        }

    }

    /**
     * Zamknięcie sesji do bazy.
     */
    public void zakoncz() {
        session.close();
    }
}
